import {
	getWxToken
} from "./hook.js";
export const BASE_URL = "https://qlyctech.cn/api";

// 授权用户
export const authorizedUser = (params) => {
	return new Promise((roslve, reject) => {
		uni.request({
			url: BASE_URL + "/wx/xcxLogin",
			method: "POST",
			data: JSON.stringify(params),
			success(res) {
				roslve(res);
			},
			fail(err) {
				reject(err);
			}
		})
	})
}


// 激活权益卡号
export const activeEquityCard = (params) => {
	return new Promise((roslve, reject) => {
		uni.request({
			url: BASE_URL + "/wx/cardActive/" + getWxToken(),
			method: "POST",
			data: params,
			success(res) {
				roslve(res);
			},
			fail(err) {
				reject(err);
			}
		})
	})
}

// 获取微信订单信息

export const queryUserEquityCard = () => {
	return new Promise((roslve, reject) => {
		uni.request({
			url: BASE_URL + "/wx/cardList/" + getWxToken(),
			method: "GET",
			success(res) {
				roslve(res);
			},
			fail(err) {
				reject(err);
			}
		})
	})
}

// 提交预约信息
export const submitAppointment = (params) => {
	return new Promise((roslve, reject) => {
		uni.request({
			url: BASE_URL + "/wx/orderApply/" + getWxToken(),
			method: "POST",
			data: params,
			success(res) {
				roslve(res);
			},
			fail(err) {
				reject(err);
			}
		})
	})
}

// 导出一个函数editAppointment，用于编辑预约
export const editAppointment = (params) => {
	// 返回一个Promise对象
	return new Promise((roslve, reject) => {
		// 发起uni.request请求
		uni.request({
			// 请求的URL地址，拼接了BASE_URL和getWxToken()函数返回的值
			url: BASE_URL + "/wx/orderUpdate/" + getWxToken(),
			// 请求的方法为POST
			method: "POST",
			// 请求的数据为params
			data: params,
			// 请求成功的回调函数
			success(res) {
				// 将请求成功的返回值res传递给Promise的resolve函数
				roslve(res);
			},
			// 请求失败的回调函数
			fail(err) {
				// 将请求失败的错误信息err传递给Promise的reject函数
				reject(err);
			}
		})
	})
}


// 图片上传
export const uploadFileTodo = (file) => {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + "/common/upload",
			method:"POST",
			data:{file},
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

// 查询用户订单
export const queryUserOrder = (state) => {
	return new Promise((resolve, reject) => {
		let url = BASE_URL + `/wx/orderList/${getWxToken()}/${state}`
		uni.request({
			url,
			method:"GET",
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
} 

// 撤销数据
export const orderRevoke = (data) => {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + `/wx/orderRevoke/${getWxToken()}`,
			method: "POST",
			data,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

// 获取图片
export const getImage = (id) => {
    return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + `/wx/download/${getWxToken()}/${id}`,
			method: "GET",
			responseType: 'arraybuffer',
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}




const ERR_MSG_OK = 'chooseAndUploadFile:ok';
const ERR_MSG_FAIL = 'chooseAndUploadFile:fail';
// 文件上传
export const fileUploadWX = () => {
	return new Promise((resolve, reject) => {
		// 检查是否在微信小程序环境
		// if (
		// 	uni.getSystemInfoSync().platform === "mp-weixin" ||
		// 	uni.getSystemInfoSync().platform === "android" ||
		// 	uni.getSystemInfoSync().platform === "ios"
		// ) {
			let chooseFile = uni.chooseFile;
			if (typeof wx !== 'undefined' &&
				typeof wx.chooseMessageFile === 'function') {
				chooseFile = wx.chooseMessageFile;
			}
			if (typeof chooseFile !== 'function') {
				return reject({
					errMsg: ' 请指定 type 类型，该平台仅支持选择 image 或 video。',
				});
			}
			chooseFile({
				type: 'all',
				success(res) {
					// 标准化文件选择结果
					const normalizedRes = normalizeChooseAndUploadFileRes(res);
					
					// 读取文件为二进制数据并上传
					const tempFilePath = normalizedRes.tempFiles[0].path;
					uni.getFileSystemManager().readFile({
						filePath: tempFilePath,
						success: (fileRes) => {
							// 文件二进制数据
							const fileData = fileRes.data;
							// 调用上传方法
							uploadFileTodo(fileData)
								.then(uploadRes => {
									resolve(uploadRes);
								})
								.catch(uploadErr => {
									reject({
										errMsg: ERR_MSG_FAIL + ':' + uploadErr.errMsg
									});
								});
						},
						fail: (fileErr) => {
							reject({
								errMsg: ERR_MSG_FAIL + ':' + fileErr.errMsg
							});
						}
					});
				},
				fail(res) {
					reject({
						errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL),
					});
				},
			});
		// }else {
		// 	reject({errMsg: "只允许在微信小程序环境使用"})
		// }
	})
}

function normalizeChooseAndUploadFileRes(res, fileType) {
	res.tempFiles.forEach((item, index) => {
		if (!item.name) {
			item.name = item.path.substring(item.path.lastIndexOf('/') + 1);
		}
		if (fileType) {
			item.fileType = fileType;
		}
		item.cloudPath =
			Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.'));
	});
	if (!res.tempFilePaths) {
		res.tempFilePaths = res.tempFiles.map((file) => file.path);
	}
	return res;
}